package mobao.baseinfo.user.service;

import mobao.baseinfo.user.entity.SysUserT;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.Optional;

public interface SysUserSerivce {
    /**
     *用户注册
     * @param t
     * @return
     */
    public SysUserT save(SysUserT t);

    /**
     * 查询所有用户
     * @return
     */
    public Page<SysUserT> findAll(int page, int size);

    /**
     * 根据ID 查询用户
     * @param userId
     * @return
     */
    public SysUserT findById(Integer userId);
    /**
     * 根据ID 删除用户
     * @param userId
     * @return
     */
    public void deleteById(Integer userId);

    /**
     * 修改相关用户信息
     * @param t
     */
    public void update(SysUserT t) throws Exception;
    /**
     * 修改用户状态
     * @param status 用户状态
     * @param userId 用户Id
     */
    public void updateStatus(Integer status, Integer userId) throws Exception;
    /**
     * 修改用户密碼
     * @param password 用户新密码
     *@param salt 用户新盐
     * @param userId 用户Id
     */
    public void updatePwd(Integer userId, String password, String salt) throws Exception;

    /**
     * 通过姓名,邮件,手机,状态等条件查找用户
     * @param t
     * @return
     */
    public Page<SysUserT> findByCondition(SysUserT t, int page, int size);

    /**
     * 查询用户名是否已存在
     * @param username
     */
    public boolean checkUsername(String username);

    /**
     * 获取用户总数
     * @return
     */
    public long count();

    /**
     * 根据用户名,EAMIL,电话,启用状态等条件获取总数
     * @param t
     * @return
     */
    public long countByCondition(SysUserT t);
    /**
     * 根据用户名得到当前用户
     * @param
     * @return
     */
    public SysUserT getByUsername(String username);

}
